One of the difficulties that engineers and scientists often contend with when developing an image acquisition application is the need to interface and interact with a number of hardware and software components provided by a number of vendors. One purpose for developing an image acquisition application is to transfer an image or stream of images to a computer from an image acquisition device such as an image acquisition source or a video source to evaluate one or more properties of an object acquired in the images. The components to achieve such a task often depend on the requirements of the application. One such component is an image capture board.
The image capture board is a hardware component, such as a circuit card assembly, installed in the computer of the engineer or scientist developing the image acquisition application. The image capture board allows the computer to acquire an image or a stream of images from one or more image acquisition devices such as, a camera or video camera associated with the computer. The image capture board provides the capability to translate data in disparate formats between the image acquisition device and the computer so the two can communicate. Typical image capture boards provide a wide variety of features and are commonly referred to as analog or digital frame grabbers.
Unfortunately, there is no method amongst the various suppliers of image capture boards and image acquisition devices that defines a common communication format, protocol or technique for communications between such devices and a computer. Consequently, each vendor of an image capture board or image acquisition device provides a specific application program interface (API) for use by the computer and the computer user to access the features of the image capture board and in turn, the features of the image acquisition device. As a result, the various methods for interfacing with an image acquisition device are burdensome to the engineer or application developer often requiring multiple versions of an application, or multiple components within an application, each being specific to an image acquisition device supplier, in order to communicate with different image acquisition devices. This imposes an additional burden to the engineer or application developer in that the application the engineer or application developer creates, is specific to an image acquisition device supplier and cannot be reused to access other image acquisition devices from other suppliers without significant additional development.
Moreover, it is not uncommon that the interface for an image acquisition device requires the user to have knowledge of a programming language such as C or C++. Consequently, it is difficult for an engineer or application developer to develop an application for use amongst multiple image acquisition devices, such as image acquisition devices from multiple suppliers, and is further burdensome for the computer user or application user to switch between image acquisition devices or to install and initialize a new image acquisition device.